home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
vol_200
/
280_01
/
quick.c
< prev
next >
Wrap
Text File
|
1989-01-11
|
1KB
|
56 lines
/* [quick.c of JUGPDS Vol.46] */
/*
*****************************************************************
* *
* Written by Hakuo Katayose (JUG-CP/M No.179) *
* 49-114 Kawauchi-Sanjuunin-machi *
* Sendai, Miyagi 980 *
* Phone: 0222-61-3219 *
* *
* Modifird by Toshiya Oota (JUG-CPM No.10) *
* Sakae ko-po 205 *
* 5-19-6 Hosoda *
* Katusikaku Tokyo 124 *
* *
* for MS-DOS Lattice C V3.1J & 80186/V20/V30 *
* *
* Compiler Option: -ccu -k0(1) -ms -n -v -w *
* *
* Edited & tested by Y. Monma (JUG-CP/M Disk Editor) *
* & T. Ota (JUG-CP/M Sub Disk Editor) *
* *
*****************************************************************
*/
/* Library functions for Software Tools */
#include "stdio.h"
#include "dos.h"
#include "ctype.h"
#include "tools.h"
void quick(v, l, r, comp, exch)
char *v[];
int l, r;
int (*comp)(), (*exch)();
{
char *vx;
int i, j;
i = l; j = r;
vx = v[ (l+r)/2 ];
while(i <= j) {
while( (*comp)(v[i], vx) < 0 )
i++;
while( (*comp)(vx, v[j]) < 0 )
j--;
if(i <= j) {
(*exch)(&v[j], &v[i]);
i++;
j--;
}
}
if(l < j) quick(v,l,j,comp,exch);
if(i < r) quick(v,i,r,comp,exch);
}